package com.dys.arithmeticoperator;

/**
 * @className: com.dys.arithmeticoperator.PlusSignTest
 * @description: + 作用：1.表正数 2.相加操作 3.字符串拼接
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/06/15 下午7:58
 */
public class PlusSignTest {

    public static void main(String[] args) {
        testItIncreasesAndDecreases();
    }

    public static void testPlus() {
        // 1.表正数
        System.out.println(+5);
        // 2.相加操作
        System.out.println(5 + 6);
        System.out.println(5 + '6');

        // 3.字符串拼接
        int num = 56;
        System.out.println("num = " + num);
        System.out.println(5 + 6 + "7"); // 117
        System.out.println(5 + '6' + "7"); // 597
        System.out.println(5 + "6" + '7'); // 567
        System.out.println("5" + 6 + '7'); // 567
        System.out.println("5" + "6" + "7"); // 567
    }

    /**
     * 自增运算：无论这个变量是否参与到运算中去，只要用++运算符，这个变量本身就是加1操作
     * 参与运算: 对运算结果产生影响：++在后，先运算，后加1。++在前，先加1，后运算。
     * 自减运算：无论这个变量是否参与到运算中去，只要用++运算符，这个变量本身就是减1操作
     * 参与运算: 对运算结果产生影响：--在后，先运算，后减1。--在前，先减1，后运算。
     */
    public static void testItIncreasesAndDecreases() {
        int num = 5;
        num++; // num = num + 1
        System.out.println(num);
        num = 5;
        ++num;
        System.out.println(num);
        // 总结：++单独使用的时候，无论是放在前面还是后面，都是+1操作
        // 将++参与到运算中
        // 规则：看++在前还是在后，++在后，先运算，后+1。++在前，先+1，后运算
        num = 5;
        int m = num++ + 7;
        System.out.println("++在后：" + m);// 12
        System.out.println(num); // 6

        num = 5;
        int n = ++num + 7; // ++在前，先+1，后运算
        System.out.println("++在前:" + n);// 13
        System.out.println(num); // 6

        // --操作：
        num = 5;
        num--;
        System.out.println("--操作：" + num);

        // --参与运算：--在后，先运算，再减一。--在前，先减一，再运算。
        num = 5;
        int result1 = num-- - 1;
        System.out.println("--在后：" + result1); // 4
        System.out.println(num); // 4

        num = 5;
        int result2 = --num - 1;
        System.out.println("--在前：" + result2); // 3
        System.out.println(num); // 4
    }

    /**
     * 运算符优先级：++级别 > +
     */
    public static void testAdd() {
        int a = 5;
        System.out.println(a++ + a++);
        System.out.println(a++ + ++a);
        System.out.println(++a + a++);
        System.out.println(++a + ++a);
    }
}
